The present invention generally relates to computer networking software and more particularly to a system and method for implementing NetWare Core Protocol (NCP) within a sockets model, such as a Berkeley System Distribution (BSD) sockets model.
In the networking art, an operating system known as Berkeley System Distribution (BSD) has been known for almost two decades, and versions of the system have been commercialized under the UNIX name by several companies over the years. More current operating systems include a BSD sockets implementation model by VxWorks which has network and transport layer protocol stacks that are modeled after BSD TCP/IP protocol stack implementation. VxWorks is marketed by WindRiver Systems of Alameda, Calif.
Novell, Inc. of Provo, Utah has developed a NetWare Core Protocol (NCP) sub-system that is adapted to operate with the VxWorks operating system. The NCP protocol is a reliable connection-oriented protocol used by NetWare servers and clients to provide a variety of services. A NCP protocol module, which typically includes a NCP reliability sub-module and a NCP library sub-module, has been used in BSD sockets implementations in the past, but such implementations have placed the entire NCP module above the sockets layer, in an architectural structure that has, from top to bottom, an applications layer, the sockets layer and a network Internetwork Packet eXchange (IPX) layer.
Such placement of the entire module above the sockets layer had the effect of degrading performance. A task switch was required for transferring data from the application task to the NCP reliability task. Another task switch transferred data from the NCP reliability task to the netTask that resided below the sockets layer. This second task switch added interprocess communication steps, such as pipes and selects, that impeded performance. The NCP protocol module was also previously implemented as an Application Programmers Interface (API) library that consisted of process calls. Application tasks gave up process control to the NCP task and could not listen for changing external events on multiple file descriptors. This meant the application could not be ported to any environment that required a non-blocking application.
Accordingly, it is a primary object of the present invention to provide an improved system and method of implementing NetWare Core Protocol (NCP) within a sockets model that does not have the above described disadvantages.
A related object is to provide such an improved system and method which enables applications to be portable to an environment that did not require blocking calls, i.e., applications using the present invention can be written in a non-blocking mode.
Another related object is to provide such an improved system and method of implementing NetWare Core Protocol (NCP) within the sockets model which provides optimum performance.
Yet another object is to provide such an improved system and method which eliminates a task switch and the use of pipes and selects above the sockets layer.
Still another object is to provide such an improved system and method which enables the NCP module to be IPX transport independent because the system inherits the transport independence characteristics of the sockets interface. This allows applications using the present invention to be transport-independent.